package sysvalidate

import (
	"errors"
	"github.com/vueadmin/app/admin/sys"
	"github.com/vueadmin/utils/conv"
)

type ActionValidate struct{}

func (ActionValidate) Validate(data *sys.Action) (err error) {
	if conv.IsEmpty(data.Name) {
		return errors.New("方法名称不能为空")
	}
	if conv.IsEmpty(data.ActionName) {
		return errors.New("方法英文名不能为空")
	}
	if conv.IsEmpty(data.Type) {
		return errors.New("方法类型不能为空")
	}

	if conv.IsValueInList(conv.String(data.Type), []string{"6", "7", "8", "9", "13"}) {
		if len(data.Fields) == 0 {
			return errors.New("请勾选操作字段")
		}
		if len(data.Fields) > 1 {
			return errors.New("只能设置一个操作字段")
		}
		if data.Type == 7 && conv.IsEmpty(data.StatusVal) {
			return errors.New("请配置状态修改值")
		}
	} else if conv.IsValueInList(conv.String(data.Type), []string{"15", "16"}) {
		if data.Jump == "" {
			return errors.New("请设置跳转地址")
		}
	} else if data.Type == 50 {
		other_config := data.OtherConfig
		if ok, _ := other_config["login_type"]; ok == "" {
			return errors.New("请选择登录方式")
		}
		if other_config["login_type"] == "1" && (conv.IsEmpty(other_config["userField"]) || conv.IsEmpty(other_config["pwdField"])) {
			return errors.New("请设置登录字段")
		}
		if other_config["login_type"] == "2" && conv.IsEmpty(other_config["smsField"]) {
			return errors.New("请设置手机号字段")
		}
	} else if data.Type == 51 {
		if conv.IsEmpty(data.OtherConfig["sms_partenr"]) {
			return errors.New("请设置短信平台")
		}
	} else if data.Type == 53 {
		if len(data.Fields) == 0 {
			return errors.New("请勾选操作字段")
		}
		if len(data.Fields) > 1 {
			return errors.New("只能设置一个操作字段")
		}
	}

	return
}
